使用Ajax方法傳資料時
一直以為資料是這樣流動的
1.Ajaz方式送資料
2.PHP檔解析後依對應邏輯程式回傳資料(return)
3.jsp呈現資料的程式
4.show在畫面上
##結果並不是!!!!
之前寫PHP前用return沒出事真的是運氣好...
code jsp
function clickbtn(){
$.ajax({
type: "GET",
url: "../controller/controller.php",
data: {data: "test"},
success: function(data) {
console.log(data);
},
})
alert("ajax結束"); //Ajax結束
}
console.log("OK"); //程式一開式就執行OK
code PHP
<?php
$data = $_GET["data"];
$arr = ["apple", "banana", "cola", "1", "2", "3"];
echo $data; //GET裡的參數test
echo "<br>1";
echo $arr; // array不能echo所以出Array to string conversion
echo "<br>3<br>";
print_r($arr);
echo "<br>2<br>";
return $arr; //本來希望return帶data 但這是錯的(X) 而且程式結束沒有echo END
echo "END";
Network
console
如果return是可行的話,在console是會在2的後面有dataArray
把PHP換一下
<?php
$data = $_GET["data"];
$arr = ["apple", "banana", "cola", "1", "2", "3"];
echo $data; //test
echo "<br>2<br>";
return $arr; //這邊就會結束程式
echo "<br>3<br>"; //以下都不執行
print_r($arr);
echo "END";
所以console只有OK test2
但如果再把rerurn拿掉
<?php
$data = $_GET["data"];
$arr = ["apple", "banana", "cola", "1", "2", "3"];
echo $data; //test
echo "<br>2<br>";
//return $arr; //註解
echo "<br>3<br>";
print_r($arr);
echo "END";
即使print出來後,還是會照樣echo END 所以要die()來結束
關於rerurn exit die網路上有很多討論了!只是自己都會忘記,那就來寫一篇文章加深印象